package com.softer.wxzj.service;

import com.github.pagehelper.PageInfo;
import com.softer.wxzj.common.entity.CommonResult;
import com.softer.wxzj.common.entity.Page;
import com.softer.wxzj.entity.*;
import com.softer.wxzj.entity.base.BaseEntity;
import com.softer.wxzj.service.base.BaseService;

import java.util.List;

/**
 *    
 *  @ClassName: BaseOrganizationService
 *  @Description: 企业基本信息
 *  @Author:  zcz
 *  @CreateDate: 2019-05-10   
 */
public interface BaseOrganizationService extends BaseService<BaseOrganization> {

    /**
     * 获取待审批列表
     *
     * @param page
     * @param organization
     * @return
     */
    PageInfo<BaseOrganization> getAuditList(Page page, BaseOrganization organization, String flowType);

    /**
     * 获取备案管理列表
     *
     * @param page
     * @param organization
     * @return
     */
    PageInfo<BaseOrganization> getRecordList(Page page, BaseOrganization organization);


    /**
     * 获取待提交列表
     *
     * @param page
     * @param organization
     * @return
     */
    PageInfo<BaseOrganization> getWaitSubmitList(Page page, BaseOrganization organization);

    /**
     * 添加审批流程
     *
     * @param
     */
    CommonResult addAudit(String businessId, String opinion, String mark);

    /**
     * 变更审批流程
     *
     * @param
     */
    CommonResult modifyAudit(String id, String opinion, String mark);

    /**
     * 提交审批
     *
     * @param
     */
    CommonResult submitAudit(String id,String operNo);

    /**
     * 提交并保存
     *
     * @param baseOrganization
     * @return
     */
    CommonResult submitAuditAndAdd(BaseOrganization baseOrganization);

    /**
     * 修改并提交
     *
     * @param baseOrganization
     * @return
     */
    CommonResult updateAndAdd(BaseOrganization baseOrganization);

    /**
     * 新增备案 通过审批
     *
     * @param
     */
    CommonResult auditPass(String id);

    /**
     * 变更  走审核
     *
     * @param
     */
    CommonResult modify(BaseOrganization baseOrganization) throws Exception;

    /**
     * 修改业务状态  备案/撤销
     *
     * @param
     */
    CommonResult updateState(String id, String state);

    /**
     * 查询变更信息列表
     *
     * @return
     */
    PageInfo<BaseOrganization> getModifyList(Page page, BaseOrganization baseOrganization);

    /**
     * 查询变更待审批列表
     *
     * @param page
     * @param baseOrganization
     * @return
     */
    PageInfo<BaseOrganization> getModifyAuditList(Page page, BaseOrganization baseOrganization);

    /**
     * 查询变更详情列表
     *
     * @return
     */
    PageInfo<BaseModifyDetail> getModifyDetailList(Page page, String id);

    /**
     * 根据id和添加人查询记录条数
     *
     * @param id
     * @return
     */
    CommonResult getCountByIdAndCreater(String id);

    /**
     * 开发企业
     *
     * @return
     */
    List<BaseOrganization> selectOpenCommittee(String id);

    /**
     * 物业企业
     *
     * @return
     */
    List<BaseOrganization> selectProperty(String id);
    void createSysOperator (BaseEntity baseEntity, String id, String operNo);
    /**
     * 选择性修改
     *
     * @param t
     * @return
     */
    CommonResult updateSelective(BaseOrganization t);

    /**
     * 查询开发企业，物业企业，施工企业，监理企业，审计企业下拉列表
     *
     * @param id   小区ID
     * @param type 类型 （01开发企业，02物业企业，03施工企业，04监理企业，08审计企业）
     * @return 企业下拉列表
     */
    List<BaseOrganization> getOrgList(String id, String type);

    /**
     * 施工企业
     *
     * @return
     */
    List<BaseOrganization> getSGOrgInfo();

    /**
     * 审计企业
     *
     * @return
     */
    List<BaseOrganization> getSJOrgInfo();

    /**
     * 监理企业
     *
     * @return
     */
    List<BaseOrganization> getJLOrgInfo();

    /**
     * 查询小区下的申请单位信息
     *
     * @param id 小区id
     * @return
     */
    List<BaseOrganization> getSQOrgInfo(String id);

    /**
     * 查看开发企业和物业是否重复
     *
     * @param name
     * @return
     */
    CommonResult selectName(String name);

    /**
     * 查询这个企业多少小区使用
     *
     * @param baseRegionInfo
     * @return
     */
    PageInfo<BaseRegionInfo> selectCountByDev(Page page, BaseRegionInfo baseRegionInfo);

    /**
     * 根据id获取企业详情
     *
     * @param id 企业id
     * @param id 图档大类
     * @return 企业基本信息
     */
    BaseOrganization getInfoById(String id, String arcType);

    /**
     * 通过统一信用代码和密码查询数据
     *
     * @return
     */
    CommonResult selectByPassWord(BaseOrganization baseOrganization);
    /**
     * 外网获取变更信息列表
     *
     * @param page 分页信息
     * @param organization 查询信息
     * @return 企业变更列表
     */
    PageInfo<BaseOrganization> getModifyListToExtraNet(Page page, BaseOrganization organization);

    /**
     * 重置密码
     *
     * @param baseOrganization
     * @return
     */
    CommonResult resetPassword(BaseOrganization baseOrganization);

    /**
     * 审核驳回查询
     *
     * @param operNo
     * @return
     */
    BaseOrganization rejectionExaminationApproval(String operNo, String arcType);
    /**
     * 获取外网确认变更接口
     *
     * @param modifyVO 变更项集合
     * @return 变更结果
     */
    CommonResult getExtraNetModify(ModifyVO modifyVO);
    /**
     * 查询监理企业信息
     * (用于外网调用，只查询监理人和监理电话)
     *
     * @param id 监理企业ID
     * @return 监理企业信息
     */
    BaseOrganization getOrgSupervisionInfo(String id);
    /**
     * 获取外网提醒列表
     *
     * @param page   分页实体
     * @param operNo 登录账号
     * @return 提醒列表
     */
    PageInfo<MessageVO> getReminder(Page page, String operNo);
}
